﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;
using Sispe.Repository;
using Microsoft.Practices.Unity;

namespace Sispe.BussinesLogic
{
    public class ContratoBL: IContratoBL
    {
        [Dependency]
        public IContratoRepository contratoDAO { get; set; }
        public List<CONTRATO> GetAllFromContratos()
        {
            return contratoDAO.GetAllFromContratos();
        }

        public List<CONTRATO> GetFromContratoByTrabajador(string descripcion)
        {
            return contratoDAO.GetFromContratoByTrabajador(descripcion);
        }

        public CONTRATO GetFromContratoById(int id)
        {
            return contratoDAO.GetFromContratoById(id);
        }

        public void AddContrato(CONTRATO contrato)
        {
            var msg = "";
            //var duplicidad = contratoDAO.ExisteDuplicidad(contrato.TRABAJADOR.PERSONA.ApePaterno, contrato.TRABAJADOR.PERSONA.Nombres, contrato.IdContrato);

            //var ok = contrato.Validate(out msg);

            //if (ok)
            //{


                contratoDAO.AddContrato(contrato);
            //}
            //else
            //{
            //    throw new Exception(msg);
            //}

        }

        public void UpdateContrato(CONTRATO contrato)
        {
            var msg = "";
            //var duplicidad = contratoDAO.ExisteDuplicidad(contrato.TRABAJADOR.PERSONA.ApePaterno, contrato.TRABAJADOR.PERSONA.Nombres, contrato.IdContrato);

            //var ok = contrato.Validate(out msg);
            
                    contratoDAO.UpdateContrato(contrato);
                
        }

        public void RemoveContrato(int id)
        {
            contratoDAO.RemoveContrato(id);
        }


        public List<CONTRATO> GetFromContratoVigenteByTrabajador(string descripcion)
        {
            return contratoDAO.GetFromContratoVigenteByTrabajador(descripcion);
        }


        public List<CONTRATO> GetAllFromContratosVigentes()
        {
            return contratoDAO.GetAllFromContratosVigentes();
        }


        public List<CONTRATO> GetAllFromContratoByFecha(int fecIni, int fecFin)
        {
            return contratoDAO.GetAllFromContratoByFecha(fecIni, fecFin);
        
        }

        public void TerminoContrato(CONTRATO contrato)
        {
            contratoDAO.TerminoContrato(contrato);
        }

        public List<CONTRATO> GetFromContratoByIdTipoTrabajador()
        {
            return contratoDAO.GetFromContratoByIdTipoTrabajador();
        }


        public List<CONTRATO> GetAllFromContratoByObreros()
        {
            return contratoDAO.GetAllFromContratoByObreros();
        }


        public List<CONTRATO> GetAllContratosVigentesByObreros()
        {
            return contratoDAO.GetAllContratosVigentesByObreros();
        }


        public List<CONTRATO> GetAllContratosVigentesToObrerosByTrabajador(string descripcion)
        {
            return contratoDAO.GetAllContratosVigentesToObrerosByTrabajador(descripcion);
        }


        public List<CONTRATO> GetAllContratosToObrerosByTrabajador(string descripcion)
        {
            return contratoDAO.GetAllContratosToObrerosByTrabajador(descripcion);
        }


        public List<CONTRATO> GetAllFromContratoByStaff()
        {
            return contratoDAO.GetAllFromContratoByStaff();
        }

        public List<CONTRATO> GetAllContratosVigentesByStaff()
        {
            return contratoDAO.GetAllContratosVigentesByStaff();
        }

        public List<CONTRATO> GetAllContratosVigentesToStaffByTrabajador(string descripcion)
        {
            return contratoDAO.GetAllContratosVigentesToStaffByTrabajador(descripcion);
        }

        public List<CONTRATO> GetAllContratosToStaffByTrabajador(string descripcion)
        {
            return contratoDAO.GetAllContratosToStaffByTrabajador(descripcion);
        }


        public List<CONTRATO> GetAllFromContratoToStaffByFecha(int fecIni, int fecFin)
        {
            return contratoDAO.GetAllFromContratoToStaffByFecha(fecIni, fecFin);
        }


        public List<CONTRATO> GetAllFromContratoToObreroByFecha(int fecIni, int fecFin)
        {
            return contratoDAO.GetAllFromContratoToObreroByFecha(fecIni, fecFin);
        }


        public List<CONTRATO> GetAllContratosToObrerosByEspecialidad(string descripcion)
        {
            return contratoDAO.GetAllContratosToObrerosByEspecialidad(descripcion);
        }

        public List<CONTRATO> GetAllContratosToObrerosByProyecto(string descripcion)
        {
            return contratoDAO.GetAllContratosToObrerosByProyecto(descripcion);
        }

        public List<CONTRATO> GetAllContratosToStaffByEspecialidad(string descripcion)
        {
            return contratoDAO.GetAllContratosToStaffByEspecialidad(descripcion);
        }

        public List<CONTRATO> GetAllContratosToStaffByProyecto(string descripcion)
        {
            return contratoDAO.GetAllContratosToStaffByProyecto(descripcion);
        }


        public List<CONTRATO> GetAllContratosVigentesToObreroByEspecialidad(string descripcion)
        {
            return contratoDAO.GetAllContratosVigentesToObreroByEspecialidad(descripcion);
        }

        public List<CONTRATO> GetAllContratosVigentesToObreroByProyecto(string descripcion)
        {
            return contratoDAO.GetAllContratosVigentesToObreroByProyecto(descripcion);
        }

        public List<CONTRATO> GetAllContratosVigentesToStaffByEspecialidad(string descripcion)
        {
            return contratoDAO.GetAllContratosVigentesToStaffByEspecialidad(descripcion);
        }

        public List<CONTRATO> GetAllContratosVigentesToStaffByProyecto(string descripcion)
        {
            return contratoDAO.GetAllContratosVigentesToStaffByProyecto(descripcion);
        }


        public List<CONTRATO> GetAllContratoByProyecto(string descripcion)
        {
            return contratoDAO.GetAllContratoByProyecto(descripcion);
        }

        public List<CONTRATO> GetAllContratoByEspecialidad(string descripcion)
        {
            return contratoDAO.GetAllContratoByEspecialidad(descripcion);
        }

        public List<CONTRATO> GetAllContratoVigenteByProyecto(string descripcion)
        {
            return contratoDAO.GetAllContratoVigenteByProyecto(descripcion);
        }

        public List<CONTRATO> GetAllContratoVigenteByEspecialidad(string descripcion)
        {
            return contratoDAO.GetAllContratoVigenteByEspecialidad(descripcion);
        }


        public List<CONTRATO> GetFromContratobyRangoFechas(DateTime? fec1, DateTime? fec2)
        {
            return contratoDAO.GetFromContratobyRangoFechas(fec1, fec2);
        }


        public List<CONTRATO> GetFromContratosPorVencer()
        {
            return contratoDAO.GetFromContratosPorVencer();
        }

        public CONTRATO GetFromContratosPorVencerByIdTrabajador(int IdTrabajador)
        {
            return contratoDAO.GetFromContratosPorVencerByIdTrabajador(IdTrabajador);
        }

        public List<CONTRATO> GetFromContratosEnLiquidacion()
        {
            return contratoDAO.GetFromContratosEnLiquidacion();
            
        }
    }
}
